package com.zhonglian.education.customerview.seeimg;

import android.Manifest;
import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.widget.TextView;

import com.tbruyelle.rxpermissions2.RxPermissions;
import com.zhonglian.education.R;
import com.zhonglian.education.base.BaseActivity;
import com.zhonglian.education.utils.ToastUtils;

import java.util.List;

import io.reactivex.functions.Consumer;

/**
 * Created by yx on 2017/6/28.
 * 7.1 总结
 * [1] standard 模式
 * 这是默认模式，每次激活Activity时都会创建Activity实例，并放入任务栈中。
 * <p>
 * [2] singleTop 模式
 * 如果在任务的栈顶正好存在该Activity的实例，就重用该实例( 会调用实例的 onNewIntent() )，否则就会创建新的实例并放入栈顶，即使栈中已经存在该Activity的实例，只要不在栈顶，都会创建新的实例。
 * <p>
 * [3] singleTask 模式
 * 如果在栈中已经有该Activity的实例，就重用该实例(会调用实例的 onNewIntent() )。重用时，会让该实例回到栈顶，因此在它上面的实例将会被移出栈。如果栈中不存在该实例，将会创建新的实例放入栈中。
 * <p>
 * [4] singleInstance 模式
 * 在一个新栈中创建该Activity的实例，并让多个应用共享该栈中的该Activity实例。一旦该模式的Activity实例已经存在于某个栈中，任何应用再激活该Activity时都会重用该栈中的实例( 会调用实例的 onNewIntent() )。其效果相当于多个应用共享一个应用，不管谁激活该 Activity 都会进入同一个应用中。
 */

public class ImageBrowseActivity extends BaseActivity implements ViewPager.OnPageChangeListener, ImageBrowseView {
    private ViewPagerFixed vp;
    private TextView hint;
    private TextView save;
    private ViewPageAdapter adapter;
    private ImageBrowsePresenter presenter;


    @Override
    public int initLayout() {
        return R.layout.activity_image_browse;
    }

    @Override
    public void initView() {
        vp = (ViewPagerFixed) findViewById(R.id.viewPager);
        hint = (TextView) findViewById(R.id.hint);
        save = (TextView) findViewById(R.id.save);
        save.setOnClickListener(new View.OnClickListener() {
            @SuppressLint("CheckResult")
            @Override
            public void onClick(View v) {
                RxPermissions  rxPermissions = new RxPermissions( ImageBrowseActivity.this);
                //是否有读写权限
                rxPermissions.request(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE).subscribe(new Consumer<Boolean>() {
                    @Override
                    public void accept(Boolean aBoolean) throws Exception {
                        if (aBoolean) {//授权成功
                            presenter.saveImage();//保存图片
                        } else {
                            ToastUtils.showToastApplication("请添加读写权限！");
                        }
                    }
                });

            }
        });
        presenter = new ImageBrowsePresenter(this);
        presenter.loadImage();//调用此处即可获取到传来的参数，通过P层处理
    }

    //ImageBrowseView接口
    @Override
    public Intent getDataIntent() {
        return getIntent();
    }

    @Override
    public void setImageBrowse(List<String> images, int position) {
        if (adapter == null && images != null && images.size() != 0) {
            adapter = new ViewPageAdapter(ImageBrowseActivity.this, images);
            vp.setOffscreenPageLimit(2);
            vp.setAdapter(adapter);
            vp.setCurrentItem(position);
            vp.addOnPageChangeListener(this);
            hint.setText(position + 1 + "/" + images.size());
        }
    }

    @Override
    public Context getMyContext() {
        return this;
    }

    @Override
    public void hideOWLoadingView() {
    }


    //===========================viewpager
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

    }

    @Override
    public void onPageSelected(int position) {
        presenter.setPosition(position);
        hint.setText(position + 1 + "/" + presenter.getImages().size());
    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }


}
